package com.gxc.rapacity;

import java.util.Arrays;
import java.util.Comparator;

/**
 * 一些项目要占用一个会议室宣讲，会议室不能同时容纳两个项目的宣讲。
 * 给你每一个项目开始的时间和结束的时间(给你一个数组，里面是一个个具体的项目)，
 * 你来安排宣讲的日程，要求会议室进行的宣讲的场次最多。返回这个最多的宣讲场次。
 */
public class AtMostMeetingRoom {

    public static int atMost(Meeting[] meetings, int timeStart) {
        //会议按最早结束时间排序
        Arrays.sort(meetings, new MeetingComparator());

        int meetingNumber = 0;
        for (Meeting meeting : meetings) {
            if (meeting.start>=timeStart) {
                meetingNumber++;
                timeStart = meeting.end;
            }
        }
        return meetingNumber;
    }

    public static class Meeting {
        public int start;
        public int end;

        public Meeting(int start, int end) {
            this.start = start;
            this.end = end;
        }
    }

    //按最早结束时间排序
    public static class MeetingComparator implements Comparator<Meeting> {

        @Override
        public int compare(Meeting o1, Meeting o2) {
            return o1.end - o2.end;
        }
    }
}
